package sisi.login;

import org.zkoss.zk.ui.Sessions;
/**
 * @author Pedro Gonzalez pedro@sisisoftware.it
 * @author Claudio Pelosi claudio@sisisoftware.it
 * @author SISI Software S.n.c. - www.sisisoftware.it
 * @version 1.0
 * 
 */
public class LoginController {
	
	
	public Integer LoginVerifica(){
		String utente, password;
		utente = (String)Sessions.getCurrent().getAttribute("utente");
		password = (String) Sessions.getCurrent().getAttribute("password");
		return LoginVerifica( utente, password);
	}
	
	public Integer LoginVerifica(String utente, String password){
		
		// Utilizzo variabile di sessione: verificalogin che indica se è già loggato
		// per evitare chiamate alla classe di controllo di login
		Integer verifica = (Integer)Sessions.getCurrent().getAttribute("verificalogin");
		if (verifica!=null && verifica==0){ // utente già loggato
			return verifica;
		}
			
		utente = (utente!=null && !utente.isEmpty()?utente.trim():"");
		password = (password!=null && !password.isEmpty()?password.trim():"");
		
		verifica = verifica( utente, password);
		
		Sessions.getCurrent().setAttribute("verificalogin", verifica);
		Sessions.getCurrent().setAttribute("utente", utente);
		Sessions.getCurrent().setAttribute("password", password);
		return verifica;
	}
	
	
	public Integer LoginCambiaPassword(String utente, String password, String nuovapassword){
				
		utente = (utente!=null && !utente.isEmpty()?utente.trim():"");
		password = (password!=null && !password.isEmpty()?password.trim():"");
		nuovapassword = (nuovapassword!=null && !nuovapassword.isEmpty()?nuovapassword.trim():"");
		
		Integer verifica = cambiaPassword( utente, password, nuovapassword);
		
		if (verifica==0){
			Sessions.getCurrent().setAttribute("verificalogin", verifica);
			Sessions.getCurrent().setAttribute("utente", utente);
			Sessions.getCurrent().setAttribute("password", nuovapassword);			
		}
		return verifica;
	}
	
	
	public Integer LoginInviaPassword(String email){
			email = (email!=null && !email.isEmpty()?email.trim():"");
		
			Integer verifica = inviaPassword( email );
			
			return verifica;
		}
	
	
	
	
	// funzioni da implementare lato COBOL
	private Integer cambiaPassword(String utente, String password, String nuovapassword){
		
		//
		return 0; // OK
		
	}
	
	private Integer inviaPassword( String email ){
		
		//
		return 0; // OK
	}
	
	private Integer verifica(String utente, String password){
	String[][] users = { {"a", "a"}, {"pippo", "pluto"}, {"prova", "prova"}};	
		Integer verifica = 1;
		for (int i = 0; i < users.length; i++) {
			String[] user = users[i];
			if (user[0].equals(utente) && user[1].equals(password)){
				verifica = 0;
				break;
			}
		}
		return verifica;
	}
	
	
}
